//package com.whyx.project.openapi.business;
//
//import com.alibaba.fastjson.JSONObject;
//import com.whyx.project.openapi.config.KafkaProducerConfig;
//import com.whyx.project.openapi.util.SignUtils;
//import exsun.jt808.data.config.jt808.Jt808DistributeMsgTopic;
//import org.apache.commons.codec.digest.DigestUtils;
//import org.apache.http.Header;
//import org.apache.http.HttpEntity;
//import org.apache.http.HttpResponse;
//import org.apache.http.NameValuePair;
//import org.apache.http.client.entity.UrlEncodedFormEntity;
//import org.apache.http.client.methods.HttpPost;
//import org.apache.http.impl.client.CloseableHttpClient;
//import org.apache.http.impl.client.HttpClients;
//import org.apache.http.message.BasicHeader;
//import org.apache.http.message.BasicNameValuePair;
//import org.apache.http.util.EntityUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//
//import java.io.IOException;
//import java.text.SimpleDateFormat;
//import java.util.*;
//
//public class GetSolarLocatorData {
//
//    private static  final Logger logger = LoggerFactory.getLogger(GetSolarLocatorData.class);
//    /**
//     * 通过appkey、appSecret调用api接口获取access_token
//     */
//    private static final String openapi_url = "http://open.aichezaixian.com/route/rest";
//
//    // 申请来的appKey和appSecret
//    private static final String app_key = "8FB345B8693CCD00A8998F0F1B857182";
//    private static final String app_secret = "69c9941dce84408a834d3e0286bddfa6";
//
//    //不同接口对应的method值
//    private static final String getTokenApi = "jimi.oauth.token.get";
//    private static final String getLocationApi = "jimi.device.location.get";
//    private static final String getHistoryTrackApi = "jimi.device.track.list";
//
//    @Autowired
//    KafkaProducerConfig kafkaProducerConfig;
//
//    /**
//     * 获取token
//     */
//    public static String GetToken() throws IOException {
//        Map<String, String> headerMap = new HashMap<String, String>();
//        headerMap.put("Content-Type", "application/x-www-form-urlencoded");
//
//        Map<String, String> paramMap = new HashMap<String, String>();
//        // 公共参数
//        paramMap.put("app_key", app_key);
//        paramMap.put("v", "1.0");
//        paramMap.put("timestamp", getCurrentDate());
//        paramMap.put("sign_method", "md5");
//        paramMap.put("format", "json");
//        paramMap.put("method", getTokenApi);
//        //paramMap.put("method", "jimi.user.device.location.list");
//
//        // 私有参数
//        paramMap.put("user_id", "智慧平台");
//        paramMap.put("user_pwd_md5", DigestUtils.md5Hex("AB888888"));
//        paramMap.put("expires_in", "120");
//
//        // 计算签名
//        String sign = "";
//        try {
//            sign = SignUtils.signTopRequest(paramMap, app_secret, "md5");
//            paramMap.put("sign", sign);
//        } catch (IOException e) {
//            System.err.println(e);
//        }
//        return (String) sendPost1(headerMap, paramMap);
//    }
//
//    /**
//     * 根据imei获取实时定位
//     */
////      public static void main(String[] args){
//    public static void getLocation(){
//
//        String token = null;
//        try {
//            token = GetToken();
//
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        Map<String, String> headerMap = new HashMap<String, String>();
//        headerMap.put("Content-Type", "application/x-www-form-urlencoded");
//
//        Map<String, String> paramMap = new HashMap<String, String>();
//        // 公共参数
//        paramMap.put("app_key", app_key);
//        paramMap.put("v", "1.0");
//        paramMap.put("timestamp", getCurrentDate());
//        paramMap.put("sign_method", "md5");
//        paramMap.put("format", "json");
//        paramMap.put("method", getLocationApi);
//        //paramMap.put("method", "jimi.user.device.location.list");
//
//        // 私有参数
//        paramMap.put("access_token", token);
//        paramMap.put("imeis", "868120270323170");
//        paramMap.put("map_type", "BAIDU");
//
//        // 计算签名
//        String sign = "";
//        try {
//            sign = SignUtils.signTopRequest(paramMap, app_secret, "md5");
//            paramMap.put("sign", sign);
//        } catch (IOException e) {
//            System.err.println(e);
//        }
//        sendPost2(headerMap, paramMap);
//
//    }
//
//    public static void getHistoryTrackList(){
////        public static void main(String[] args){
//        Map<String, String> headerMap = new HashMap<String, String>();
//        headerMap.put("Content-Type", "application/x-www-form-urlencoded");
//
//        Map<String, String> paramMap = new HashMap<String, String>();
//
//        String token = null;
//        try {
//            token = GetToken();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        // 公共参数
//        paramMap.put("app_key", app_key);
//        paramMap.put("v", "1.0");
//        paramMap.put("timestamp", getCurrentDate());
//        paramMap.put("sign_method", "md5");
//        paramMap.put("format", "json");
//        paramMap.put("method", getHistoryTrackApi);
//        //paramMap.put("method", "jimi.user.device.location.list");
//
//        // 私有参数
//        paramMap.put("access_token", token);
//        paramMap.put("imei", "868120270323170");
//        paramMap.put("begin_time", "2021-10-15 00:00:00");
//        paramMap.put("end_time", "2021-10-15 19:00:00");
//        paramMap.put("map_type", "BAIDU");
//
//        // 计算签名
//        String sign = "";
//        try {
//            sign = SignUtils.signTopRequest(paramMap, app_secret, "md5");
//            paramMap.put("sign", sign);
//        } catch (IOException e) {
//            System.err.println(e);
//        }
//
//        sendPost3(headerMap, paramMap);
//    }
//
//    private static Object sendPost1(Map<String, String> headerMap, Map<String, String> paramMap) throws IOException {
//        HttpPost post = new HttpPost(openapi_url);
//        List<NameValuePair> list = new ArrayList<NameValuePair>();
//        for (String key : paramMap.keySet()) {
//            list.add(new BasicNameValuePair(key, paramMap.get(key)));
//        }
//        post.setEntity(new UrlEncodedFormEntity(list, "UTF-8"));
//        if (null != headerMap) {
//            post.setHeaders(assemblyHeader(headerMap));
//        }
//
//        CloseableHttpClient httpClient = HttpClients.createDefault();
//        HttpResponse response = httpClient.execute(post);
//        HttpEntity entity = response.getEntity();
//        JSONObject tokenJson = JSONObject.parseObject(EntityUtils.toString(entity, "utf-8"));
//        Map<String,String> tokenMap = (Map<String, String>) tokenJson.get("result");
//        return tokenMap.get("accessToken");
//    }
//
//    private static void sendPost2(Map<String, String> headerMap, Map<String, String> paramMap) {
//        try {
//            HttpPost post = new HttpPost(openapi_url);
//            List<NameValuePair> list = new ArrayList<NameValuePair>();
//            for (String key : paramMap.keySet()) {
//                list.add(new BasicNameValuePair(key, paramMap.get(key)));
//            }
//            post.setEntity(new UrlEncodedFormEntity(list, "UTF-8"));
//            if (null != headerMap) {
//                post.setHeaders(assemblyHeader(headerMap));
//            }
//
//            CloseableHttpClient httpClient = HttpClients.createDefault();
//            HttpResponse response = httpClient.execute(post);
//            HttpEntity entity = response.getEntity();
//            //System.out.println(EntityUtils.toString(entity, "utf-8"));
//
//            JSONObject tokenJson = JSONObject.parseObject(EntityUtils.toString(entity, "utf-8"));
//            Object data = tokenJson.get("result");
//            GpsData gpsData = new GpsData();
//            gpsData.dvo = (String) ((JSONObject)data).get("imei");
//            gpsData.lat = (double) ((JSONObject)data).get("lat");
//            gpsData.lng = (double) ((JSONObject)data).get("lng");
//            gpsData.spd = (Integer) ((JSONObject)data).get("speed");
//            gpsData.dre = (Integer) ((JSONObject)data).get("direction");
//            gpsData.gdt = (Date) ((JSONObject)data).get("gpsTime");
//            gpsData.mie = (Integer) ((JSONObject)data).get("mileage");
//            gpsData.sts.set(0,(Integer) ((JSONObject)data).get("accStatus"));
//            kafkaProducerConfig.kafkaTemplate().send(Jt808DistributeMsgTopic.GpsData, vehicleRegistrationInformation.toJSONString().toString());
//
//
//
//        } catch (IOException e) {
//            System.err.println(e);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    private static void sendPost3(Map<String, String> headerMap, Map<String, String> paramMap) {
//        try {
//            HttpPost post = new HttpPost(openapi_url);
//            List<NameValuePair> list = new ArrayList<NameValuePair>();
//            for (String key : paramMap.keySet()) {
//                list.add(new BasicNameValuePair(key, paramMap.get(key)));
//            }
//            post.setEntity(new UrlEncodedFormEntity(list, "UTF-8"));
//            if (null != headerMap) {
//                post.setHeaders(assemblyHeader(headerMap));
//            }
//
//            CloseableHttpClient httpClient = HttpClients.createDefault();
//            HttpResponse response = httpClient.execute(post);
//            HttpEntity entity = response.getEntity();
//            //System.out.println(EntityUtils.toString(entity, "utf-8"));
//            JSONObject tokenJson = JSONObject.parseObject(EntityUtils.toString(entity, "utf-8"));
//            Object data = tokenJson.get("result");
//            GpsData gpsData = new GpsData();
//            gpsData.dvo = (String) ((JSONObject)data).get("imei");
//            gpsData.lat = (double) ((JSONObject)data).get("lat");
//            gpsData.lng = (double) ((JSONObject)data).get("lng");
//            gpsData.spd = (Integer) ((JSONObject)data).get("speed");
//            gpsData.dre = (Integer) ((JSONObject)data).get("direction");
//            gpsData.gdt = (Date) ((JSONObject)data).get("gpsTime");
//            gpsData.mie = (Integer) ((JSONObject)data).get("mileage");
//
////            System.out.println(historyTrackList);
//
//
//        } catch (IOException e) {
//            System.err.println(e);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    /**
//     * 组装头部信息
//     *
//     * @param headers
//     * @return
//     */
//    private static Header[] assemblyHeader(Map<String, String> headers) {
//        Header[] allHeader = new BasicHeader[headers.size()];
//        int i = 0;
//        for (String str : headers.keySet()) {
//            allHeader[i] = new BasicHeader(str, headers.get(str));
//            i++;
//        }
//        return allHeader;
//    }
//
//    public static String getCurrentDate() {
//        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        String result = formatter.format(new Date());
//        return result;
//    }
//
//}
